package ru.myrtle.umf.codegen;

public interface GenMonitor {

    public void modelStarted(String modelName, String destination, String suffix);
    public void modelFinished();

    public void ruleStarted(String ruleName);
    public void ruleObject(Object object);
    public void ruleFinished();

    public void domainStarted(String domainName);
    public void domainFinished();

    public void templateStarted(String templateName);
    public void templatePerformed(String result);
    public void templateRejected();

    /*
     *
     */

    public static class Empty implements GenMonitor {

        @Override
        public void modelStarted(String modelName, String destination, String suffix) {
        }

        @Override
        public void modelFinished() {
        }

        @Override
        public void ruleStarted(String ruleName) {
        }

        @Override
        public void ruleObject(Object object) {
        }

        @Override
        public void ruleFinished() {
        }

        @Override
        public void domainStarted(String domainName) {
        }

        @Override
        public void domainFinished() {
        }

        @Override
        public void templateStarted(String templateName) {
        }

        @Override
        public void templatePerformed(String result) {
        }

        @Override
        public void templateRejected() {
        }
    }

    /*
     *
     */

    public static final GenMonitor NULL = new Empty();
}
